namespace SharpTalk.Core.Services.Contracts.Client
{
    using System.Net.Security;
    using System.ServiceModel;
    using System;
    using Requests;
    using Responses;

    [ServiceContract(Namespace = "http://SharpTalk/", ProtectionLevel = ProtectionLevel.EncryptAndSign)]
    [ServiceKnownType(typeof(SimpleMessage))]
    [ServiceKnownType(typeof(UserNotificationMessage))]
    public interface IMessageServices
    {
        [OperationContract(Name = "DeliverMessage", AsyncPattern = true)]
        IAsyncResult BeginDeliverMessage(MessageSendRequest request, AsyncCallback callback, object state);
        MessageSendResponse EndDeliverMessage(IAsyncResult result);
    }
}